package com.tianji.promotion.service;

import com.tianji.common.domain.dto.PageDTO;
import com.tianji.promotion.domain.dto.CouponFormDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianji.promotion.domain.dto.CouponIssueFormDTO;
import com.tianji.promotion.domain.po.Coupon;
import com.tianji.promotion.domain.query.CouponQuery;
import com.tianji.promotion.domain.vo.CouponDetailVO;
import com.tianji.promotion.domain.vo.CouponPageVO;
import com.tianji.promotion.domain.vo.CouponVO;

import java.util.List;

/**
* @author Cammy
* @description 针对表【coupon(优惠券的规则信息)】的数据库操作Service
* @createDate 2025-02-25 05:58:13
*/
public interface CouponService extends IService<Coupon> {

    /**
     * 新增优惠券接口
     * @param couponFormDTO
     */
    void saveCoupon(CouponFormDTO couponFormDTO);

    /**
     * 分页查询优惠券接口
     * @param couponQuery
     * @return
     */
    PageDTO<CouponPageVO> queryCouponByPage(CouponQuery couponQuery);

    /**
     * 发放优惠券接口
     * @param couponIssueFormDTO
     */
    void beginIssue(CouponIssueFormDTO couponIssueFormDTO);

    /**
     * 删除优惠券
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据id查询优惠券接口
     * @param id
     * @return
     */
    CouponDetailVO queryCouponById(Long id);

    /**
     * 查询发放中的优惠券
     * @return
     */
    List<CouponVO> queryIssuingCoupons();

    /**
     * 移除缓存
     * @param id
     */
    void pauseIssue(Long id);
}
